import axios from "axios";
import { Message } from "element-ui";
// import qs from 'qs'

// axios 配置
// axios.defaults.baseURL = 'https://47.100.109.62:200';

// axios.defaults.baseURL = "https://apishadow.yzf.com.cn";
axios.defaults.timeout = 200*1000;
axios.defaults.headers.post["Content-Type"] =
    "application/x-www-form-urlencoded;charset=UTF-8";
axios.defaults.withCredentials = false; //

// POST传参序列化
// axios.interceptors.request.use((config) => {
//   if (config.method === 'post') {
//     config.data = qs.stringify(config.data);
//   }
//   return config;
// }, (error) => {
//   // _.toast("错误的传参", 'fail');
//   return Promise.reject(error);
// });

//返回状态判断
// axios.interceptors.response.use((res) => {
//   if (!res.data.success) {
//     // _.toast(res.data.msg);
//     return Promise.reject(res);
//   }
//   return res;
// }, (error) => {
//   // _.toast("网络异常", 'fail');
//   return Promise.reject(error);
// });

export function fetch(url, headers, params, method) {
    if (method.toLowerCase() == "post") {
        return new Promise((resolve, reject) => {
            // Object.assign(axios.defaults.headers.common, headers);
            // console.log(headers.token)
            // console.log(params)
            axios.defaults.headers.common["Authorization"] = headers.token;
            axios
                .post(url, params)
                .then(
                    response => {
                        resolve(response.data);
                    },
                    err => {
                        Message.error("网络超时");
                        reject(err);
                    }
                )
                .catch(error => {
                    Message.error("网络超时");
                    reject(error);
                });
        });
    } else if (method.toLowerCase() == "get") {
        return new Promise((resolve, reject) => {
            // Object.assign(axios.defaults.headers.common, headers);
            axios.defaults.headers.common["Authorization"] = headers.token;
            axios
                .get(url, params)
                .then(
                    response => {
                        resolve(response.data);
                    },
                    err => {
                        Message.error("网络超时");
                        reject(err);
                    }
                )
                .catch(error => {
                    Message.error("网络超时");
                    reject(error);
                });
        });
    } else if (method.toLowerCase() == "put") {
        return new Promise((resolve, reject) => {
            // Object.assign(axios.defaults.headers.common, headers);
            // console.log(headers.token)
            // console.log(params)
            axios.defaults.headers.common["Authorization"] = headers.token;
            axios
                .put(url, params)
                .then(
                    response => {
                        resolve(response.data);
                    },
                    err => {
                        Message.error("网络超时");
                        reject(err);
                    }
                )
                .catch(error => {
                    Message.error("网络超时");
                    reject(error);
                });
        });
    }
}

export default {
    POST(url, headers = {}, params = {}) {
        return fetch(url, headers, params, "post");
    },

    PUT(url, headers = {}, params = {}) {
        return fetch(url, headers, params, "put");
    },

    GET(url, headers = {}, params = {}) {
        return fetch(url, headers, params, "get");
    }
};
